import type {
  SysMenuDtlVo,
  SysMenuPageQo,
  SysMenuQo,
  SysMenuTreeQo,
  SysMenuVo,
} from '#/system/menu'
import { http } from '@/utils/request/index'

/**
 * 获取系统菜单分页列表
 * @param params 查询参数
 * @returns 系统菜单列表
 */
export function getSysMenuPageListApi(params: SysMenuPageQo) {
  return http.request<PageResult<SysMenuVo>>('get', '/admin-api/system/sysMenu/sysMenuPage', {
    params,
  })
}

/**
 * 获取系统菜单树
 * @param params 查询参数
 * @returns 系统菜单树
 */
export function getSysMenuTreeApi(params?: SysMenuTreeQo) {
  return http.request<SysMenuVo[]>('get', '/admin-api/system/sysMenu/sysMenuTree', {
    params,
  })
}

/**
 * 获取租户菜单树
 * @param params 查询参数
 * @returns 系统菜单树
 */
export function getSysMenuTenantTreeApi(params?: SysMenuTreeQo) {
  return http.request<SysMenuVo[]>('get', '/admin-api/system/sysMenu/sysMenuTenantTree', {
    params,
  })
}

/**
 * 获取系统菜单详情
 * @param id 系统菜单id
 * @returns 系统菜单详情
 */
export function getSysMenuDetailsApi(id?: string) {
  return http.request<SysMenuDtlVo>('get', `/admin-api/system/sysMenu/sysMenuDetails/${id}`)
}

/**
 * 新增系统菜单
 * @param data 系统菜单信息
 * @returns 系统菜单id
 */
export function createSysMenuApi(data: SysMenuQo) {
  return http.request<string>('post', '/admin-api/system/sysMenu/sysMenuCreate', {
    data,
  })
}

/**
 * 修改系统菜单
 * @param data 系统菜单信息
 * @returns 系统菜单id
 */
export function updateSysMenuApi(data: SysMenuQo) {
  return http.request<string>('post', '/admin-api/system/sysMenu/sysMenuUpdate', {
    data,
  })
}

/**
 * 删除系统菜单
 * @param idList 系统菜单id列表
 * @returns 系统菜单id
 */
export function deleteSysMenuApi(idList: string[]) {
  return http.request<string>('post', '/admin-api/system/sysMenu/sysMenuRemove', {
    params: {
      idList: idList.join(','),
    },
  })
}

/**
 * 启用系统菜单
 * @param idList 系统菜单id列表
 * @returns 系统菜单id
 */
export function enableSysMenuApi(idList: string[]) {
  return http.request<string>('post', '/admin-api/system/sysMenu/sysMenuEnable', {
    params: {
      idList: idList.join(','),
    },
  })
}

/**
 * 禁用系统菜单
 * @param idList 系统菜单id列表
 * @returns 系统菜单id
 */
export function disableSysMenuApi(idList: string[]) {
  return http.request<string>('post', '/admin-api/system/sysMenu/sysMenuDisable', {
    params: {
      idList: idList.join(','),
    },
  })
}
